home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-10-15 | 17.9 KB | 808 lines | [TEXT/PJMM] |
- UNIT MyDocuments;
- {***********************************}
- INTERFACE
-
- USES
- MemTypes, QuickDraw, OSIntf, ToolIntf, PackIntf, MacPrint, ObjIntf, GlobalStuff, MyDialogs, MyShapes;
-
- TYPE
- TDocument = OBJECT(TObject)
- fDocType: OSType;
- fVolNum: Integer;
- fFileNum: Integer;
- fChanged: BOOLEAN;
- fViewRgn: RgnHandle;
- fViewRect: Rect;
- fDocRect: Rect;
- fTextHdl: TEHandle;
- fPictHdl: PicHandle;
- fMyHdl: Handle;
- fForeC: Integer;
- fBackC: Integer;
- fShapeID: Integer;
- PROCEDURE DoNew;
- PROCEDURE DoOpen (vVolNum, vFileNum: Integer);
- PROCEDURE DoSave (vFileNum: Integer);
- PROCEDURE DoPrint (vPrPort: TPPrPort);
- PROCEDURE ApplTask;
- PROCEDURE ClickInDoc (vPt: Point);
- PROCEDURE KeyPress (vChar: CHAR);
- PROCEDURE ReDraw;
- PROCEDURE Update;
- PROCEDURE Activate;
- PROCEDURE Edit (vItem: Integer);
- END;
-
- TTextDocument = OBJECT(TDocument)
- PROCEDURE DoNew;
- override;
- PROCEDURE DoOpen (vVolNum, vFileNum: Integer);
- override;
- PROCEDURE DoSave (vFileNum: Integer);
- override;
- PROCEDURE DoPrint (vPrPort: TPPrPort);
- override;
- PROCEDURE ApplTask;
- override;
- PROCEDURE ClickInDoc (vPt: Point);
- override;
- PROCEDURE KeyPress (vChar: CHAR);
- override;
- PROCEDURE ReDraw;
- override;
- PROCEDURE Update;
- override;
- PROCEDURE Activate;
- override;
- PROCEDURE Edit (vItem: Integer);
- override;
- PROCEDURE Free;
- override;
- END;
-
- TPictDocument = OBJECT(TDocument)
- oOvals: TOvals;
- oSpirals: TSpirals;
- oShape: TShape;
- PROCEDURE DoNew;
- override;
- PROCEDURE DoOpen (vVolNum, vFileNum: Integer);
- override;
- PROCEDURE DoSave (vFileNum: Integer);
- override;
- PROCEDURE DoPrint (vPrPort: TPPrPort);
- override;
- PROCEDURE ApplTask;
- override;
- PROCEDURE ClickInDoc (vPt: Point);
- override;
- PROCEDURE ReDraw;
- override;
- PROCEDURE Update;
- override;
- PROCEDURE Edit (vItem: Integer);
- override;
- PROCEDURE Free;
- override;
- END;
-
- {***********************************}
- IMPLEMENTATION
-
- FUNCTION SetColor (vColor: Integer): LongInt;
- BEGIN
- CASE vColor OF
- kBlack:
- SetColor := blackColor;
- kWhite:
- SetColor := whiteColor;
- kRed:
- SetColor := redColor;
- kGreen:
- SetColor := greenColor;
- kBlue:
- SetColor := blueColor;
- kCyan:
- SetColor := cyanColor;
- kMagenta:
- SetColor := magentaColor;
- kYellow:
- SetColor := yellowColor;
- END;
- END; {SetColor}
-
- {----------------------------------------}
- PROCEDURE TDocument.DoNew;
- BEGIN
- fVolNum := 0;
- fFileNum := 0;
- fChanged := FALSE;
- fTextHdl := NIL;
- fPictHdl := NIL;
- fMyHdl := NIL;
- END; {DoNew}
-
- {----------------------------------------}
- PROCEDURE TDocument.DoOpen (vVolNum, vFileNum: Integer);
- BEGIN
- END; {DoOpen}
-
- {----------------------------------------}
- PROCEDURE TDocument.DoSave (vFileNum: Integer);
- BEGIN
- END; {DoSave}
-
- {----------------------------------------}
- PROCEDURE TDocument.DoPrint (vPrPort: TPPrPort);
- BEGIN
- END; {DoPrint}
-
- {----------------------------------------}
- PROCEDURE TDocument.ApplTask;
- BEGIN
- END; {ApplTask}
-
- {----------------------------------------}
- PROCEDURE TDocument.ClickInDoc (vPt: Point);
- BEGIN
- END; {ClickInDoc}
-
- {----------------------------------------}
- PROCEDURE TDocument.KeyPress (vChar: CHAR);
- BEGIN
- END; {KeyPress}
-
- {----------------------------------------}
- PROCEDURE TDocument.ReDraw;
- BEGIN
- END; {ReDraw}
-
- {----------------------------------------}
- PROCEDURE TDocument.Update;
- BEGIN
- END; {Update}
-
- {----------------------------------------}
- PROCEDURE TDocument.Activate;
- BEGIN
- END; {Activate}
-
- {----------------------------------------}
- PROCEDURE TDocument.Edit (vItem: Integer);
- BEGIN
- END; {Edit}
-
- {========================================}
- PROCEDURE TTextDocument.DoNew;
- VAR
- vColumnWidth: Integer;
- vViewRect: Rect;
-
- BEGIN
- INHERITED DoNew;
- vColumnWidth := 6 * 72;
- vViewRect := fViewRect;
- InsetRect(vViewRect, kTextMargin, 0);
- fViewRect := vViewRect;
- fDocRect := fViewRect;
- fDocRect.right := vColumnWidth;
- fTextHdl := TENew(fDocRect, fViewRect);
- fDocType := 'TEXT';
- TextSize(12);
- fTextHdl^^.txSize := thePort^.txSize;
- TextFace([]);
- fMyHdl := NewHandle($2);
- fMyHdl^^ := -128;
- fForeC := kBlack;
- fBackC := kWhite;
- END; {DoNew}
-
- {----------------------------------------}
- PROCEDURE TTextDocument.DoOpen (vVolNum, vFileNum: Integer);
- VAR
- vFileSize: LongInt;
- vHdl: Handle;
- vDocRect: Rect;
-
- BEGIN
- IF OSError(GetEOF(vFileNum, vFileSize)) THEN
- Exit(DoOpen);
- IF OSError(SetFPos(vFileNum, FSFromStart, 0)) THEN
- Exit(DoOpen);
- IF vFileSize > MaxInt THEN
- BEGIN
- CenterMyDialog('ALRT', kSizeErrID);
- IF StopAlert(kSizeErrID, NIL) = OK THEN
- Exit(DoOpen);
- END;
- SetHandleSize(fTextHdl^^.hText, vFileSize);
- IF OSError(MemError) THEN
- Exit(DoOpen);
- vHdl := fTextHdl^^.hText;
- MoveHHi(vHdl);
- HLock(vHdl);
- IF OSError(FSRead(vFileNum, vFileSize, vHdl^)) THEN
- BEGIN
- HUnlock(vHdl);
- Exit(DoOpen);
- END;
- HUnlock(vHdl);
- fTextHdl^^.teLength := vFileSize;
- TECalText(fTextHdl);
- TESetSelect(MaxInt, MaxInt, fTextHdl);
- WITH fDocRect, fTextHdl^^ DO
- BEGIN
- bottom := top + nLines * lineHeight;
- vDocRect := fDocRect;
- OffsetRect(vDocRect, 0, bottom);
- fDocRect := vDocRect;
- END;
- fVolNum := vVolNum;
- fFileNum := vFileNum;
- fChanged := FALSE;
- END; {DoOpen}
-
- {----------------------------------------}
- PROCEDURE TTextDocument.DoSave (vFileNum: Integer);
- VAR
- vFileSize: LongInt;
- vHdl: Handle;
-
- BEGIN
- IF OSError(SetFPos(vFileNum, FSFromStart, 0)) THEN
- Exit(DoSave);
- vFileSize := fTextHdl^^.teLength;
- vHdl := fTextHdl^^.hText;
- MoveHHi(vHdl);
- HLock(vHdl);
- IF OSError(FSWrite(vFileNum, vFileSize, vHdl^)) THEN
- BEGIN
- HUnlock(vHdl);
- Exit(DoSave);
- END;
- HUnlock(vHdl);
- fFileNum := vFileNum;
- fChanged := FALSE;
- END; {DoSave}
-
- {----------------------------------------}
- PROCEDURE TTextDocument.DoPrint (vPrPort: TPPrPort);
- VAR
- vHMargin, vVMargin: Integer;
- vPageRect: Rect;
- vTextHdl: TEHandle;
- vPageSize: Integer;
- vPageHeight: Integer;
- vDocSize: Integer;
- vNumCopies: Integer;
- i: Integer;
-
- BEGIN
- WITH fTextHdl^^ DO
- BEGIN
- TextFont(txFont);
- TextSize(txSize);
- TextFace(txFace);
- END;
- WITH gPrintHdl^^.prInfo DO
- BEGIN
- vHMargin := ROUND(kPrintMargin * iHRes);
- vVMargin := ROUND(kPrintMargin * iVRes);
- vPageRect := rPage;
- InsetRect(vPageRect, vHMargin, vVMargin);
- END;
- vTextHdl := TENew(vPageRect, vPageRect);
- WITH vTextHdl^^, viewRect DO
- BEGIN
- vPageSize := (bottom - top) DIV lineHeight;
- vPageHeight := vPageSize * lineHeight;
- bottom := top + vPageHeight;
- destRect := viewRect;
- DisposHandle(hText);
- hText := fTextHdl^^.hText;
- teLength := fTextHdl^^.teLength;
- END;
- SetCursor(gWatch);
- TECalText(vTextHdl);
- SetCursor(arrow);
- WITH gPrintHdl^^.prJob DO
- IF bJDocLoop = BDraftLoop THEN
- vNumCopies := iCopies
- ELSE
- vNumCopies := 1;
- MoveHHi(Handle(vTextHdl));
- HLock(Handle(vTextHdl));
- WITH vTextHdl^^ DO
- FOR i := 1 TO vNumCopies DO
- BEGIN
- vDocSize := nLines;
- WHILE vDocSize > 0 DO
- BEGIN
- PrOpenPage(vPrPort, NIL);
- IF OSError(PrError) THEN
- leave;
- TEUpdate(viewRect, vTextHdl);
- OffsetRect(destRect, 0, -vPageHeight);
- PrClosePage(vPrPort);
- IF OSError(PrError) THEN
- leave;
- vDocSize := vDocSize - vPageSize;
- END;
- END;
- vTextHdl^^.hText := NIL;
- HUnlock(Handle(vTextHdl));
- TEDispose(vTextHdl);
- END; {DoPrint}
-
- {----------------------------------------}
- PROCEDURE TTextDocument.ApplTask;
- VAR
- vPt: Point;
- vCopyFlag: BOOLEAN;
- vPasteFlag: BOOLEAN;
-
- BEGIN
- TEIdle(fTextHdl);
- GetMouse(vPt);
- IF PtInRgn(vPt, fViewRgn) THEN
- SetCursor(gIBeam)
- ELSE
- SetCursor(arrow);
- WITH fTextHdl^^ DO
- vCopyFlag := (selStart <> selEnd);
- vPasteFlag := (TEGetScrapLen <> 0);
- SetEnable(kEditID, kCut, vCopyFlag);
- SetEnable(kEditID, kCopy, vCopyFlag);
- SetEnable(kEditID, kPaste, vPasteFlag);
- END; {ApplTask}
-
- {----------------------------------------}
- PROCEDURE TTextDocument.ClickInDoc (vPt: Point);
- VAR
- vShift: BOOLEAN;
-
- BEGIN
- vShift := (BitAnd(gEvent.modifiers, ShiftKey) = ShiftKey);
- TEClick(vPt, vShift, fTextHdl);
- END; {ClickInDoc}
-
- {----------------------------------------}
- PROCEDURE TTextDocument.KeyPress (vChar: CHAR);
- BEGIN
- IF fTextHdl <> NIL THEN
- BEGIN
- IF (fTextHdl^^.teLength = MaxInt) AND (vChar <> Chr(kBS)) THEN
- BEGIN
- CenterMyDialog('ALRT', kSizeErrID);
- IF StopAlert(kSizeErrID, NIL) = OK THEN
- Exit(KeyPress);
- END;
- TEKey(vChar, fTextHdl);
- WITH fDocRect, fTextHdl^^ DO
- bottom := top + lineHeight * nLines;
- fChanged := TRUE;
- END;
- END; {KeyPress}
-
- {----------------------------------------}
- PROCEDURE TTextDocument.ReDraw;
- VAR
- vFontInfo: FontInfo;
- vViewRect: Rect;
-
- BEGIN
- vViewRect := fViewRect;
- InsetRect(vViewRect, kTextMargin, 0);
- fViewRect := vViewRect;
- ForeColor(SetColor(fForeC));
- BackColor(SetColor(fBackC));
- GetFontInfo(vFontInfo);
- WITH fTextHdl^^, vFontInfo, fDocRect DO
- BEGIN
- fontAscent := ascent;
- lineHeight := ascent + descent + leading;
- bottom := top + nLines * lineHeight;
- END;
- TECalText(fTextHdl);
- InvalRgn(fViewRgn);
- END; {ReDraw}
-
- {----------------------------------------}
- PROCEDURE TTextDocument.Update;
- BEGIN
- WITH fTextHdl^^ DO
- BEGIN
- viewRect := fViewRect;
- destRect := fDocRect;
- TEUpdate(viewRect, fTextHdl);
- END;
- END; {Update}
-
- {----------------------------------------}
- PROCEDURE TTextDocument.Activate;
- BEGIN
- IF fTextHdl <> NIL THEN
- IF BitAnd(gEvent.modifiers, activeFlag) <> 0 THEN
- TEActivate(fTextHdl)
- ELSE
- TEDeActivate(fTextHdl);
- END; {Activate}
-
- {----------------------------------------}
- PROCEDURE TTextDocument.Edit (vItem: Integer);
- VAR
- vOffset: LongInt;
-
- BEGIN
- CASE vItem OF
- kUndo:
- ;
- kCut:
- BEGIN
- TECut(fTextHdl);
- IF OSError(ZeroScrap) THEN
- Exit(Edit);
- IF OSError(TEToScrap) THEN
- Exit(Edit);
- END;
- kCopy:
- BEGIN
- TECopy(fTextHdl);
- IF OSError(ZeroScrap) THEN
- Exit(Edit);
- IF OSError(TEToScrap) THEN
- Exit(Edit);
- END;
- kPaste:
- BEGIN
- IF GetScrap(NIL, 'TEXT', vOffset) > 0 THEN
- IF OSError(TEFromScrap) THEN
- Exit(Edit);
- IF (fTextHdl^^.teLength + TEGetScrapLen > MaxInt) THEN
- BEGIN
- CenterMyDialog('ALRT', kSizeErrID);
- IF StopAlert(kSizeErrID, NIL) = OK THEN
- Exit(Edit);
- END;
- TEPaste(fTextHdl);
- END;
- kClear:
- TEDelete(fTextHdl);
- OTHERWISE
- END;
- IF vItem <> kCopy THEN
- fChanged := TRUE;
- WITH fDocRect, fTextHdl^^ DO
- bottom := top + lineHeight * nLines;
- END; {Edit}
-
- {----------------------------------------}
- PROCEDURE TTextDocument.Free;
- BEGIN
- IF fMyHdl <> NIL THEN
- DisposHandle(fMyHdl);
- TEDispose(fTextHdl);
- INHERITED Free;
- END; {Free}
-
- {========================================}
- PROCEDURE TPictDocument.DoNew;
- BEGIN
- INHERITED DoNew;
- oOvals := NIL;
- oSpirals := NIL;
- oShape := NIL;
- IF gPrintHdl <> NIL THEN
- fDocRect := gPrintHdl^^.prInfo.rPage
- ELSE
- fDocRect := thePort^.portRect;
- fDocType := 'PICT';
- fForeC := kBlack;
- fBackC := kWhite;
- fShapeID := 0;
-
- New(oOvals);
- New(oOvals.oDialog);
- oOvals.oDialog.Init(5, 1, kPopUPID1, FALSE);
-
- New(oSpirals);
- New(oSpirals.oDialog);
- oSpirals.oDialog.Init(3, 0, 0, FALSE);
- END; {DoNew}
-
- {----------------------------------------}
- PROCEDURE TPictDocument.DoOpen (vVolNum, vFileNum: Integer);
- VAR
- vFileSize: LongInt;
- vHdl: Handle;
-
- BEGIN
- IF OSError(GetEOF(vFileNum, vFileSize)) THEN
- Exit(DoOpen);
- IF OSError(SetFPos(vFileNum, FSFromStart, kPictHeader)) THEN
- Exit(DoOpen);
- vFileSize := vFileSize - kPictHeader;
- vHdl := NewHandle(vFileSize);
- MoveHHi(vHdl);
- HLock(vHdl);
- IF OSError(FSRead(vFileNum, vFileSize, vHdl^)) THEN
- BEGIN
- HUnlock(vHdl);
- DisposHandle(vHdl);
- Exit(DoOpen);
- END;
- HUnlock(vHdl);
- fPictHdl := PicHandle(vHdl);
- fDocRect := fPictHdl^^.picFrame;
- fVolNum := vVolNum;
- fFileNum := vFileNum;
- fChanged := FALSE;
- END; {DoOpen}
-
- {----------------------------------------}
- FUNCTION NewClearPtr (logicalSize: LongInt): Ptr;
- INLINE
- $201F, {move.l (a7)+, d0}
- $A31E, {_NewPtr, CLEAR}
- $2E88; {move.l a0, (a7)}
-
- {- - - - - - - - - - - - - - - - - - -}
- PROCEDURE TPictDocument.DoSave (vFileNum: Integer);
- VAR
- vFileSize: LongInt;
- vClearPtr: Ptr;
- vHdl: Handle;
-
- BEGIN
- IF fPictHdl = NIL THEN
- Exit(DoSave);
- IF OSError(SetFPos(vFileNum, FSFromStart, 0)) THEN
- Exit(DoSave);
- vFileSize := kPictHeader;
- vClearPtr := NewClearPtr(vFileSize);
- IF OSError(FSWrite(vFileNum, vFileSize, vClearPtr)) THEN
- BEGIN
- DisposPtr(vClearPtr);
- Exit(DoSave);
- END;
- DisposPtr(vClearPtr);
- vHdl := Handle(fPictHdl);
- vFileSize := GetHandleSize(vHdl);
- MoveHHi(vHdl);
- HLock(vHdl);
- IF OSError(FSWrite(vFileNum, vFileSize, vHdl^)) THEN
- BEGIN
- HUnlock(vHdl);
- Exit(DoSave);
- END;
- HUnlock(vHdl);
- fFileNum := vFileNum;
- fChanged := FALSE;
- END; {DoSave}
-
- {----------------------------------------}
- PROCEDURE TPictDocument.DoPrint (vPrPort: TPPrPort);
- VAR
- vPageRect: Rect;
- vDocRect: Rect;
- vNumCopies: Integer;
- i: Integer;
-
- BEGIN
- WITH gPrintHdl^^.prJob DO
- IF bJDocLoop = BDraftLoop THEN
- vNumCopies := iCopies
- ELSE
- vNumCopies := 1;
- FOR i := 1 TO vNumCopies DO
- BEGIN
- PrOpenPage(vPrPort, NIL);
- IF OSError(PrError) THEN
- Exit(DoPrint);
- vDocRect := fDocRect;
- WITH fDocRect DO
- OffsetRect(vDocRect, -left, -top);
- DrawPicture(fPictHdl, vDocRect);
- PrClosePage(vPrPort);
- IF OSError(PrError) THEN
- END;
- END; {DoPrint}
-
- {----------------------------------------}
- PROCEDURE TPictDocument.ApplTask;
- VAR
- vPt: Point;
- vCopyFlag: BOOLEAN;
- vPasteFlag: BOOLEAN;
-
- BEGIN
- GetMouse(vPt);
- IF PtInRgn(vPt, fViewRgn) THEN
- SetCursor(gCross)
- ELSE
- SetCursor(arrow);
- vCopyFlag := TRUE;
- vPasteFlag := (InfoScrap^.scrapSize > 0);
- SetEnable(kEditID, kCut, vCopyFlag);
- SetEnable(kEditID, kCopy, vCopyFlag);
- SetEnable(kEditID, kPaste, vPasteFlag);
- END; {ApplTask}
-
- {----------------------------------------}
- PROCEDURE TPictDocument.ClickInDoc (vPt: Point);
- BEGIN
- CASE fShapeID OF
- kOvals:
- oShape := oOvals;
- kSpirals:
- oShape := oSpirals;
- OTHERWISE
- Exit(ClickInDoc);
- END;
- WITH oShape DO
- BEGIN
- fPt.h := vPt.h - fDocRect.left;
- fPt.v := vPt.v - fDocRect.top;
- oDialog.DoDialog(2000 + fShapeID);
- IF oDialog.fDFlag = FALSE THEN
- Exit(ClickInDoc);
- END;
- self.ReDraw;
- ValidRgn(fViewRgn);
- SetClip(fViewRgn);
- EraseRgn(fViewRgn);
- self.Update;
- ClipRect(thePort^.portRect);
- END; {ClickInDoc}
-
- {----------------------------------------}
- PROCEDURE TPictDocument.ReDraw;
- CONST
- PicDwgBeg = 130;
- PicDwgEnd = 131;
- PicGrpBeg = 140;
- PicGrpEnd = 141;
-
- VAR
- vPt: Point;
- vClipRect: Rect;
-
- BEGIN
- IF oShape <> NIL THEN
- BEGIN
- ForeColor(SetColor(fForeC));
- BackColor(SetColor(fBackC));
- WITH oShape DO
- BEGIN
- vPt.h := fPt.h + fDocRect.left;
- vPt.v := fPt.v + fDocRect.top;
- END;
-
- SetRect(vClipRect, -10000, -10000, 10000, 10000);
- ClipRect(vClipRect);
-
- IF fPictHdl <> NIL THEN
- KillPicture(fPictHdl);
- fPictHdl := OpenPicture(fDocRect);
- PicComment(PicDwgBeg, 0, NIL);
- PicComment(PicGrpBeg, 0, NIL);
- oShape.Create(vPt);
- PicComment(PicGrpEnd, 0, NIL);
- PicComment(PicDwgEnd, 0, NIL);
- ClosePicture;
- fDocRect := fPictHdl^^.picFrame;
- fChanged := TRUE;
- END;
- IF fPictHdl <> NIL THEN
- InvalRgn(fViewRgn);
- END; {ReDraw}
-
- {----------------------------------------}
- PROCEDURE TPictDocument.Update;
- BEGIN
- IF fPictHdl <> NIL THEN
- DrawPicture(fPictHdl, fDocRect);
- END; {Update}
-
- {----------------------------------------}
- PROCEDURE TPictDocument.Edit (vItem: Integer);
- VAR
- vScrapHdl: Handle;
- vLength: LongInt;
- vErr: OSErr;
- vOffset: LongInt;
-
- BEGIN
- CASE vItem OF
- kUndo:
- ;
- kCut:
- BEGIN
- vScrapHdl := NewHandle(0);
- vScrapHdl := Handle(fPictHdl);
- IF vScrapHdl <> NIL THEN
- IF NOT OSError(ZeroScrap) THEN
- BEGIN
- vLength := GetHandleSize(vScrapHdl);
- MoveHHi(vScrapHdl);
- HLock(vScrapHdl);
- vErr := PutScrap(vLength, 'PICT', vScrapHdl^);
- HUnlock(vScrapHdl);
- IF oShape <> NIL THEN
- oShape := NIL;
- IF fPictHdl <> NIL THEN
- BEGIN
- KillPicture(fPictHdl);
- fPictHdl := NIL;
- END;
- END;
- vScrapHdl := NIL;
- DisposHandle(vScrapHdl);
- END;
- kCopy:
- BEGIN
- vScrapHdl := NewHandle(0);
- vScrapHdl := Handle(fPictHdl);
- IF NOT OSError(ZeroScrap) THEN
- IF vScrapHdl <> NIL THEN
- BEGIN
- vLength := GetHandleSize(vScrapHdl);
- MoveHHi(vScrapHdl);
- HLock(vScrapHdl);
- vErr := PutScrap(vLength, 'PICT', vScrapHdl^);
- HUnlock(vScrapHdl);
- END;
- vScrapHdl := NIL;
- DisposHandle(vScrapHdl);
- END;
- kPaste:
- BEGIN
- vScrapHdl := NewHandle(0);
- vLength := GetScrap(vScrapHdl, 'PICT', vOffset);
- IF vLength > 0 THEN
- BEGIN
- IF fPictHdl <> NIL THEN
- BEGIN
- KillPicture(fPictHdl);
- fPictHdl := NIL;
- END;
- fPictHdl := PicHandle(vScrapHdl);
- fDocRect := fPictHdl^^.picFrame;
- END;
- END;
- kClear:
- BEGIN
- IF oShape <> NIL THEN
- oShape := NIL;
- IF fPictHdl <> NIL THEN
- BEGIN
- KillPicture(fPictHdl);
- fPictHdl := NIL;
- END;
- END;
- OTHERWISE
- END;
- IF vItem <> kCopy THEN
- BEGIN
- SetClip(fViewRgn);
- EraseRgn(fViewRgn);
- self.Update;
- ClipRect(thePort^.portRect);
- fChanged := TRUE;
- END;
- END; {Edit}
-
- {----------------------------------------}
- PROCEDURE TPictDocument.Free;
- BEGIN
- IF oOvals <> NIL THEN
- oOvals.Free;
- IF oSpirals <> NIL THEN
- oSpirals.Free;
- IF fPictHdl <> NIL THEN
- KillPicture(fPictHdl);
- INHERITED Free;
- END; {Free}
-
- END. {unit MyDocuments}
- {***********************************}